import os
import loguru
from collections import deque
from typing import Type, List

MAX_LOG_LENGTH: int = 500


def autoRegisterLogger(cls: Type) -> Type:
    """
    装饰器：为类自动注册 loguru 日志缓冲区和文件输出。
    """
    global MAX_LOG_LENGTH
    cls.log_buffer: deque = deque(maxlen=MAX_LOG_LENGTH)  # type: ignore
    # 自动注册 loguru sink 输出到文件
    loguru.logger.add(
        "my_log.log", enqueue=True, rotation="1 MB", mode="w", encoding="utf-8"
    )
    # 注册一个 sink，写入缓冲区
    loguru.logger.add(
        lambda msg: cls.log_buffer.append(msg), enqueue=True, format="{message}"
    )

    return cls


@autoRegisterLogger
class Logger:
    """日志管理类，负责日志的记录和获取"""

    @classmethod
    def getLogs(cls) -> List[str]:
        """
        获取所有日志，返回日志消息列表。
        """
        return list(cls.log_buffer)


if __name__ == "__main__":
    loguru.logger.info("help")
    loguru.logger.info("help")
    loguru.logger.info("help")
    loguru.logger.info("help")
    os.system("pause")
    print(Logger.getLogs())
    os.system("pause")
